import useDictStore from '@/store/modules/dict'
import { getDicts } from '@/api/system/dict/data'
import { ToRefs } from 'vue'

/**
 * 获取字典数据
 */
export function useDict(...args) {
  const res = ref({})
  return (() => {
    args.forEach((d, index) => {
      res.value[d] = []
      getDicts(d).then((resp) => {
        res.value[d] = resp.data.map((p) => ({ label: p.dictLabel, value: p.dictValue, listClass: p.listClass, cssClass: p.cssClass }))
      })
    })
    return toRefs(res.value)
  })()
}

/**
 * 获取字典数据
 */
export function useDicts(...args): ToRefs<Record<string, any>> {
  const res = ref({})
  return (() => {
    args.forEach((dictType, index) => {
      res.value[dictType] = []
      const dicts = useDictStore().getDict(dictType)
      if (dicts) {
        res.value[dictType] = dicts
      } else {
        getDicts(dictType).then((resp) => {
          res.value[dictType] = resp.data.map((p) => ({
            dictLabel: p.dictLabel,
            dictValue: p.dictValue,
            listClass: p.listClass,
            cssClass: p.cssClass
          }))
          useDictStore().setDict(dictType, res.value[dictType])
        })
      }
    })
    return toRefs(res.value)
  })()
}
